---
title: "Acala / Karura Token Dashboard"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
social: menu
source_code: embed
---
```{css custom1, echo=FALSE}
.dataTables_scrollBody {
max-height: 100% !important;
}
```
```{r global, include=FALSE}
library(knitr)
knitr::opts_chunk$set(
message = FALSE,
warning = FALSE,
comment = "#>"
)
library(kableExtra)
library(formattable)
library(lubridate)
library(flexdashboard)
library(DT)
library(subscanr)
library(ghql)
x <- GraphqlClient$new()
# Helper function to concat
`%+%` <- function(a, b) paste0(a, b)
```
```{r tokens, cache = TRUE, include=FALSE}
rd <- fread("~/Python_HOME/tokens.csv")
# dim(rd)
# rd[, .N, by = Token][N > 1]
# fix Tokens
rd[, Symbol := Token]
rd[Token == "{'ForeignAsset': 0}", Symbol := "RMRK"]
rd[Token == "{'ForeignAsset': 1}", Symbol := "ARIS"]
rd[Token == "{'ForeignAsset': 2}", Symbol := "QTZ"]
rd[Token == "{'ForeignAsset': 3}", Symbol:= "MOVRZ"]
rd[Token == "{'ForeignAsset': 4}", Symbol := "HKO"]
rd[Token == "{'ForeignAsset': 5}", Symbol := "CSM"]
rd[Token == "{'ForeignAsset': 6}", Symbol := "KICO"]
rd[Token == "{'ForeignAsset': 7}", Symbol := "USDT"]
rd[Token == "{'ForeignAsset': 8}", Symbol := "TEER"]
rd[Token == "{'ForeignAsset': 9}", Symbol := "NEER"]
rd[Token == "{'ForeignAsset': 10}", Symbol := "KMA"]
rd[Token == "{'ForeignAsset': 11}", Symbol := "BSX"]
rd[Token == "{'ForeignAsset': 12}", Symbol := "AIR"]
rd[Token == "{'ForeignAsset': 13}", Symbol := "CRAB"]
rd[Token == "{'ForeignAsset': 14}", Symbol := "GENS"]
rd[Token == "{'ForeignAsset': 15}", Symbol := "EQD"]
rd[Token == "{'StableAssetPoolToken': 0}", Symbol := "taiKSM"]
rd[Token == "{'LiquidCrowdloan': 13}", Symbol := "LCDOT"]
rd[Token == "{'Token': 'VSKSM'}", Symbol := "VSKSM"]
rd[Token == "{'Token': 'PHA'}", Symbol := "PHA"]
rd[Token == "{'Token': 'KSM'}", Symbol := "KSM"]
rd[Token == "{'Token': 'KBTC'}", Symbol := "KBTC"]
rd[Token == "{'Token': 'TAI'}", Symbol := "TAI"]
rd[Token == "{'Token': 'LKSM'}", Symbol := "LKSM"]
rd[Token == "{'Token': 'KINT'}", Symbol :="KINT"]
rd[Token == "{'Token': 'KUSD'}", Symbol := "AUSD"]
rd[Token == "{'Token': 'BNC'}", Symbol := "BNC"]
rd[substr(Token, 1, 6) == "['KAR'", Symbol := "KAR"]
rd[Token == "['CRAB', 'CKTON']", Symbol := "CKTON"]
rd[Token == "{'Token': 'LDOT'}", Symbol := "LDOT"]
rd[Token == "{'Token': 'DOT'}", Symbol := "DOT"]
rd[Token == "{'Token': 'AUSD'}", Symbol := "AUSD"]
rd[substr(Token, 1, 6) == "['ACA'", Symbol := "ACA"]
rd[Token == "{'Token': 'INTR'}", Symbol := "INTR"]
rd[substr(Symbol, 1, 1) == "{", Symbol := NA]
# rd[, .(Token, Symbol)]
rd[, .N, by = Symbol][N > 1]
rd <- merge(rd, subscanr::tokens[, .(Token, decimals)], by.x = "Symbol", by.y = "Token")
rd[, adj := 10 ** as.numeric(decimals)]
rd[, Amount := as.numeric(Amount) / adj]
```
Row
----
### DOT
```{r DOT}
dot <- rd[Symbol == 'DOT', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
dot[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(dot, escape = FALSE) %>%
kable_styling()
```
Row
----
### KSM
```{r KSM}
ksm <- rd[Symbol == 'KSM', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
ksm[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(ksm, escape = FALSE) %>%
kable_styling()
```
Row
----
### AUSD
```{r AUSD}
ausd <- rd[Symbol == 'AUSD', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
ausd[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(ausd, escape = FALSE) %>%
kable_styling()
```
Row
----
### KBTC
```{r KBTC}
kbtc <- rd[Symbol == 'KBTC', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
kbtc[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(kbtc, escape = FALSE) %>%
kable_styling()
```
Row
----
### KINT
```{r KINT}
kint <- rd[Symbol == 'KINT', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
kint[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(kint, escape = FALSE) %>%
kable_styling()
```
Row
----
### PHA
```{r PHA}
pha <- rd[Symbol == 'PHA', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
pha[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(pha, escape = FALSE) %>%
kable_styling()
```